////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2017-2018 Qualcomm Technologies, Inc.
// All Rights Reserved.
// Confidential and Proprietary - Qualcomm Technologies, Inc.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// THIS IS AUTO-GENERATED CODE.  PLEASE DO NOT EDIT (File bug reports against tools).
///
/// Auto-generated by: ParameterParser V1.1.4
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// @file  gic_3_0_0.h
/// @brief Auto-generated Chromatix parameter file
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#ifndef GIC_3_0_0_H
#define GIC_3_0_0_H

#include "parametermodule.h"
#include "parameterfilesymboltable.h"
#include "parametertypes.h"
#include "ispglobalelements.h"

#define GIC_3_0_0_NAMESPACE_BEGIN namespace gic_3_0_0 {
#define GIC_3_0_0_NAMESPACE_END }

GIC_3_0_0_NAMESPACE_BEGIN

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// gic30_rgn_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct gic30_rgn_dataType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// enable_gic
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   GIC enable bit
    /// Default Value: 1
    /// Range:         [0, 1]
    /// Bit Depth:     1u
    /// Notes:         0x1: enable GIC/PNR. 0x0: disable GIC/PNR.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                  enable_gic;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// enable_pnr
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   PNR enable bit
    /// Default Value: 1
    /// Range:         [0, 1]
    /// Bit Depth:     1u
    /// Notes:         0x1: enable GIC/PNR. 0x0: disable GIC/PNR.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                  enable_pnr;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// noise_std_lut_tab
    ///
    /// Tuning Level:  must_tune
    /// Description:   65-entry shot noise profile (std) from measurement.
    /// Default Value: 0 6 9 11 12 14 15 16 18 19 20 21 22 23 24 24 25 26 27 27 28 29 30 30 31 32 32 33 33 34 35 35 36 36 37 37 38 39 39 40 40 41 41 42 42 43 43 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44
    /// Range:         [0, 512.0]
    /// Bit Depth:     14u
    /// Length:        65
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct noise_std_lut_tabStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// noise_std_lut - Array
        ///
        /// Tuning Level:  must_tune
        /// Default Value: 0 6 9 11 12 14 15 16 18 19 20 21 22 23 24 24 25 26 27 27 28 29 30 30 31 32 32 33 33 34 35 35 36 36 37 37 38 39 39 40 40 41 41 42 42 43 43 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44
        /// Length:        65
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        FLOAT noise_std_lut[65];
    } noise_std_lut_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// gic_noise_scale
    ///
    /// Tuning Level:  often_tune
    /// Description:   noise scale factor for GIC correction
    /// Default Value: 1.0
    /// Range:         [0, 15.98]
    /// Bit Depth:     10u, q6
    /// Notes:         GIC correction will be stronger as gic_noise_scale increases.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                  gic_noise_scale;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// gic_correction_strength
    ///
    /// Tuning Level:  often_tune
    /// Description:   GIC correction strength
    /// Default Value: 0.6
    /// Range:         [0, 1]
    /// Bit Depth:     9u, q8
    /// Notes:         GIC correction will be stronger as gic_correction_strength increases. 256 means full strength.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                  gic_correction_strength;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// thin_line_noise_offset
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   noise offset for edge-thin line detection in GIC
    /// Default Value: 400
    /// Range:         [0, 16383]
    /// Bit Depth:     14u
    /// Notes:         GIC correction will be stronger and less edge/thin line will be detected as thin_line_noise_offset
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                  thin_line_noise_offset;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// pnr_noise_scale_tab
    ///
    /// Tuning Level:  often_tune
    /// Description:   noise scale factor for PNR correction
    /// Default Value: 1.0 1.0 1.0 1.0
    /// Range:         [0, 15.98]
    /// Bit Depth:     10u, q6
    /// Length:        4
    /// Notes:         PNR correction will be stronger as pnr_noise_scale increases.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct pnr_noise_scale_tabStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// pnr_noise_scale - Array
        ///
        /// Tuning Level:  often_tune
        /// Default Value: 1.0 1.0 1.0 1.0
        /// Length:        4
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        FLOAT pnr_noise_scale[4];
    } pnr_noise_scale_tab;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// pnr_correction_strength
    ///
    /// Tuning Level:  often_tune
    /// Description:   PNR correction strength
    /// Default Value: 0.6
    /// Range:         [0, 1]
    /// Bit Depth:     9u, q8
    /// Notes:         PNR correction will be stronger as pnr_correction_strength increases. 256 means full strength.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FLOAT                  pnr_correction_strength;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// radial_pnr_str_adj_tab
    ///
    /// Tuning Level:  often_tune
    /// Description:   radial adjustment for peak noise reduction (PNR) strength
    /// Default Value: 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0
    /// Range:         [0, 15.98]
    /// Bit Depth:     10u, q6
    /// Length:        7
    /// Notes:         PNR will be stronger as radial_pnr_str_adj increases. In general, radial_pnr_str_adj is a monotonically
    ///                increasing curve.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct radial_pnr_str_adj_tabStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// radial_pnr_str_adj - Array
        ///
        /// Tuning Level:  often_tune
        /// Default Value: 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0
        /// Length:        7
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        FLOAT radial_pnr_str_adj[7];
    } radial_pnr_str_adj_tab;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// mod_gic30_aec_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct mod_gic30_aec_dataType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// aec_trigger
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    globalelements::trigger_pt_type_aec aec_trigger;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// gic30_rgn_data
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    gic30_rgn_dataType  gic30_rgn_data;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// mod_gic30_hdr_aec_dataType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct mod_gic30_hdr_aec_dataType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// hdr_aec_trigger
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ispglobalelements::trigger_pt_type_aec_hdr hdr_aec_trigger;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// hdr_aec_data
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct hdr_aec_dataStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// mod_gic30_aec_data - Array
        /// Min Length:    1
        /// Max Length:    Unbounded
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32                  mod_gic30_aec_dataCount;
        UINT32                  mod_gic30_aec_dataID;
        mod_gic30_aec_dataType* mod_gic30_aec_data;
    } hdr_aec_data;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// chromatix_gic30_coreType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct chromatix_gic30_coreType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// mod_gic30_hdr_aec_data - Array
    /// Min Length:    1
    /// Max Length:    Unbounded
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32                      mod_gic30_hdr_aec_dataCount;
    UINT32                      mod_gic30_hdr_aec_dataID;
    mod_gic30_hdr_aec_dataType* mod_gic30_hdr_aec_data;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// chromatix_gic30_reserveType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct chromatix_gic30_reserveType
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// radial_anchor_tab
    ///
    /// Tuning Level:  rarely_tune
    /// Description:   radial anchor table (distance percentage)
    /// Default Value: 0, 0.2, 0.3, 0.4, 0.6, 0.8, 1.0
    /// Range:         [0, 1]
    /// Bit Depth:     10u
    /// Length:        7
    /// Notes:         none
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct radial_anchor_tabStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// radial_anchor - Array
        ///
        /// Tuning Level:  rarely_tune
        /// Default Value: 0, 0.2, 0.3, 0.4, 0.6, 0.8, 1.0
        /// Length:        7
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        FLOAT radial_anchor[7];
    } radial_anchor_tab;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// chromatix_gic30Type
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct chromatix_gic30Type
{
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Binary file symbol table entry ID
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32 SymbolTableID;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// enable_section
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct enable_sectionStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;
        globalelements::enable_flag_type gic_global_enable;
    } enable_section;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// module_version
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct module_versionStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;
        INT32 major_revision;
        INT32 minor_revision;
        INT32 incr_revision;
    } module_version;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// control_variables
    ///
    /// Default Value: control_aec_exp_sensitivity_ratio, control_gain
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct control_variablesStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// control_var_type - Array
        /// Default Value: control_aec_exp_sensitivity_ratio, control_gain
        /// Length:        2
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        enum class control_var_typeEnum
        {
            control_exp_time_ratio            = 0,
            control_aec_exp_sensitivity_ratio = 1,
            control_lux_idx                   = 2,
            control_gain                      = 3
        } control_var_type[2];
    } control_variables;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// control_method
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct control_methodStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// aec_exp_control
        /// Default Value: control_gain
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ispglobalelements::tuning_control_aec_type     aec_exp_control;

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// aec_hdr_control
        /// Default Value: control_aec_exp_sensitivity_ratio
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ispglobalelements::tuning_control_aec_hdr_type aec_hdr_control;
    } control_method;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// dynamic_enable_triggers
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct dynamic_enable_triggersStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// gic_global_enable
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        struct gic_global_enableStruct
        {
            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            /// Binary file symbol table entry ID
            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            UINT32 SymbolTableID;

            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            /// enable
            ///
            /// Tuning Level:  rarely_tune
            /// Description:   enable GIC3.0 module
            /// Default Value: 0
            /// Range:         [0, 1]
            /// Bit Depth:     1u
            /// Notes:         none
            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            globalelements::enable_flag_type        enable;

            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            /// hyst_control_var
            ///
            /// Tuning Level:  rarely_tune
            /// Description:   enable GIC3.0 module
            /// Default Value: control_gain
            /// Range:         [0, 1]
            /// Bit Depth:     1u
            /// Notes:         none
            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            ispglobalelements::control_var_type        hyst_control_var;

            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            /// hyst_mode
            /// Default Value: UPWARD
            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            ispglobalelements::hyst_direction          hyst_mode;

            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            /// hyst_trigger
            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            ispglobalelements::trigger_pt_couplet_type hyst_trigger;
        } gic_global_enable;
    } dynamic_enable_triggers;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// chromatix_gic30_reserve
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    chromatix_gic30_reserveType chromatix_gic30_reserve;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// chromatix_gic30_core
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    chromatix_gic30_coreType    chromatix_gic30_core;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// chromatix_gic30TypeClass
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
class chromatix_gic30TypeClass : public ParameterModule, public chromatix_gic30Type
{
public:
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Version
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static const UINT16 MAJOR = 3;
    static const UINT16 MINOR = 0;
    static const UINT32 PATCH = 0;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Default Constructor
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    chromatix_gic30TypeClass(
        const CHAR* name);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Constructor
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    chromatix_gic30TypeClass(
        const CHAR* name,
        UINT32 modeId,
        UINT16 mode,
        UINT16 subMode,
        UINT32 group);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Destructor
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    virtual ~chromatix_gic30TypeClass();

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// GetName
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static const CHAR* GetName(
        const CHAR* type);


    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load gic30_rgn_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadgic30_rgn_dataType(
        ParameterFileSymbolTableEntry* entry,
        gic30_rgn_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load gic30_rgn_dataType_noise_std_lut_tabStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadgic30_rgn_dataType_noise_std_lut_tabStruct(
        ParameterFileSymbolTableEntry* entry,
        gic30_rgn_dataType::noise_std_lut_tabStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load gic30_rgn_dataType_pnr_noise_scale_tabStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadgic30_rgn_dataType_pnr_noise_scale_tabStruct(
        ParameterFileSymbolTableEntry* entry,
        gic30_rgn_dataType::pnr_noise_scale_tabStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load gic30_rgn_dataType_radial_pnr_str_adj_tabStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadgic30_rgn_dataType_radial_pnr_str_adj_tabStruct(
        ParameterFileSymbolTableEntry* entry,
        gic30_rgn_dataType::radial_pnr_str_adj_tabStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load mod_gic30_aec_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmod_gic30_aec_dataType(
        ParameterFileSymbolTableEntry* entry,
        mod_gic30_aec_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load mod_gic30_hdr_aec_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmod_gic30_hdr_aec_dataType(
        ParameterFileSymbolTableEntry* entry,
        mod_gic30_hdr_aec_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load mod_gic30_hdr_aec_dataType_hdr_aec_dataStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmod_gic30_hdr_aec_dataType_hdr_aec_dataStruct(
        ParameterFileSymbolTableEntry* entry,
        mod_gic30_hdr_aec_dataType::hdr_aec_dataStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load chromatix_gic30_coreType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadchromatix_gic30_coreType(
        ParameterFileSymbolTableEntry* entry,
        chromatix_gic30_coreType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load chromatix_gic30_reserveType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadchromatix_gic30_reserveType(
        ParameterFileSymbolTableEntry* entry,
        chromatix_gic30_reserveType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load chromatix_gic30_reserveType_radial_anchor_tabStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadchromatix_gic30_reserveType_radial_anchor_tabStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_gic30_reserveType::radial_anchor_tabStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load chromatix_gic30Type
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadchromatix_gic30Type(
        ParameterFileSymbolTableEntry* entry,
        chromatix_gic30Type* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load enable_sectionStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadenable_sectionStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_gic30Type::enable_sectionStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load module_versionStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmodule_versionStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_gic30Type::module_versionStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load control_variablesStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadcontrol_variablesStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_gic30Type::control_variablesStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load control_methodStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadcontrol_methodStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_gic30Type::control_methodStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load dynamic_enable_triggersStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loaddynamic_enable_triggersStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_gic30Type::dynamic_enable_triggersStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load dynamic_enable_triggersStruct_gic_global_enableStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loaddynamic_enable_triggersStruct_gic_global_enableStruct(
        ParameterFileSymbolTableEntry* entry,
        chromatix_gic30Type::dynamic_enable_triggersStruct::gic_global_enableStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload mod_gic30_hdr_aec_dataType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadmod_gic30_hdr_aec_dataType(
        mod_gic30_hdr_aec_dataType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload mod_gic30_hdr_aec_dataType_hdr_aec_dataStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadmod_gic30_hdr_aec_dataType_hdr_aec_dataStruct(
        mod_gic30_hdr_aec_dataType::hdr_aec_dataStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload chromatix_gic30_coreType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadchromatix_gic30_coreType(
        chromatix_gic30_coreType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Unload chromatix_gic30Type
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static void Unloadchromatix_gic30Type(
        chromatix_gic30Type* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Parse symbol table entry, and return a new object
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    virtual ParameterModule* Parse(
        ParameterSetManager* manager,
        ParameterFileSymbolTableEntry* entry) const;

}; // End class chromatix_gic30TypeClass

GIC_3_0_0_NAMESPACE_END
#endif // GIC_3_0_0_H

